The present invention relates to the field of digitally watermarking a computer program. More particularly, the present invention relates to a method for encoding digital watermark information into a program or application downloaded over a computer network, such as the Internet.
Computer networking technology has advanced to the point that distribution of computer programs and applications over a computer network, such as the Internet has become commercially attractive because the infrastructure and expenses associated with a sales and distribution network are eliminated. Nevertheless, such an approach has a drawback in that software is easily pirated, thereby potentially minimizing any revenue obtained.
What is needed is an easy and efficient technique for encoding information, termed a xe2x80x9cdigital watermarkxe2x80x9d or more simply a xe2x80x9cwatermarkxe2x80x9d, into a computer program or application that is being downloaded over a computer network so that any pirating of the downloaded software can be traced to the original purchaser. Moreover, what is needed is a way to encode a digital watermark into a computer program in such a way the information is not easily detected and forged.
The present invention provides a technique for encoding digital watermark information into a computer program, or application, that is downloaded from a computer network, such as the Internet, so that every instance of an application is unique. When the application is distributed or sold over the Internet, personal identification information, such as a purchaser""s name, address, telephone number, credit card number, etc., is collected and encoded into a binary sequence. The binary sequence is mapped into an instruction swap table to create a sequence that is used for exchanging, or swapping, specific occurrences of pairs of non-interfering instructions. As the application is downloaded, pairs of non-interfering instructions are easily and efficiently swapped based on the encoded binary sequence. Thus, the downloaded application is watermarked with the personal identification information collected from the purchaser before the application was downloaded.
Two downloaded watermarked applications can be compared by a pirate, but only the differences between the two applications will be detected and not all of the pairs of instructions that can be swapped or that have been changed will be detected. Consequently, a large number of downloaded applications must be compared before all non-interfering pairs of instructions can be reliably determined. To make the watermark information more difficult to detect and forge, the encoded binary sequence can also be encrypted using various techniques, such as a public-key encryption technique, before pairs of non-interfering instructions are swapped.
To detect the origin of a pirated application, the watermark information is extracted from the pirated application by comparison to the original code of the application. The resulting difference is decrypted and converted to the encoded binary sequence forming the watermark information. The resulting watermark information is decoded to determine the personalized identification information of the original purchaser.